﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//double pos(int a, int b)
//{
//	if (b == 0)
//		return 1.0;
//	else if (b > 0)
//		return a * pos(a, b - 1);
//	else
//		return 1.0 / a * pos(a, b - 1);
//}
//
//
//int main()
//{
//	int n = 0;
//	int k = 0;
//	double ret = 0.0;
//
//	scanf("%d %d", &n, &k);
//	ret = pos(n, k);
//	printf("%lf", ret);
//
//	return 0;
//}


//写一个递归函数DigitSum(n)，输入一个非负整数，返回组成它的数字之和
//
//例如，调用DigitSum(1729)，则应该返回1 + 7 + 2 + 9，它的和是19
//
//输入：1729，输出：19
//
//int DigitSum(int x)
//{
//	int y = x / 10;
//
//	if (y==0)
//		return x;
//	else
//		return x%10 + pos(x / 10);
//
//}
//
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	int ret = DigitSum(a);
//	printf("%d", ret);
//
//	return 0;
//
//}

//递归方式实现打印一个整数的每一位

//void pos(int x)
//{
//	if (x > 9)
//	{
//		pos(x / 10);
//	}
//	printf("%d ", x % 10);
//	
//}
//
//
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	pos(a);
//
//	return 0;
//}

//hanshu(char* str)
//{
//    int count = 0;
//    while (*str != '\0')
//    {
//        str++;
//        count++; ﻿;
//    }
//    return count;
//}
//
//int main()
//{
//    char arr[] = "hello";
//    int len = hanshu(arr);
//    printf("%d\n", len);
//
//    return 0;
//}

//int hanshu(char* str)
//{
//	int count = 0;
//	while (*str != '\0')
//	{
//		str++;
//		count++;
//	}
//	return count;
//}
//
//int main()
//{
//	char arr[] = "hello";
//	int len = hanshu(arr);
//	printf("%d", len);
//
//	return 0;
//}

//int pos(char* str)
//{
//	if (*str == '\0')
//		return 0;
//	else
//		return 1 + pos(str+1);
//}
//
//int main()
//{
//	char arr[] = "hello";
//	int ret = pos(arr);
//	printf("%d", ret);
//
//	return 0;
//}
//
//编写一个函数 reverse_string(char* string)（递归实现）
//
//实现：将参数字符串中的字符反向排列，不是逆序打印。
//
//要求：不能使用C函数库中的字符串操作函数。
//
//比如 :
//
//char arr[] = "abcdef";
//
//
//逆序之后数组的内容变成：fedcba

#include<string.h>

//reverse_string(char arr[])
//{
//	int l = 0;
//	int r = strlen(arr) - 1;
//	while (l < r)
//	{
//		char tmp = arr[l];
//		arr[l] = arr[r];
//		arr[r] = tmp;
//		l++;
//		r--;
//	}
//}

//
//reverse_string(char* str)
//{
//	int l = 0;
//	int r = strlen(str)-1;
//
//	while(l<r)
//	{
//		char tmp = *(str + l);
//		*(str + l) = *(str + r);
//		*(str + r) = tmp;
//
//		l++;
//		r--;
//	}
//	
//}
//

int Strlen(char* str)
{
	int count = 0;
	while (*str != '\0')
	{
		str++;
		count++;
	}
	return count;
}

reverse_string(char* string)
{
	int len = Strlen(string);
	char tmp = *string;
	*string = *(string + len - 1);
	*(string + len - 1) = '\0';
	if (Strlen(string + 1) >= 2)
		reverse_string(string + 1);

	*(string + len - 1) = tmp;
}

int main()
{
	char arr[] = "abcdef";
	reverse_string(arr);
	printf("%s", arr);

	return 0;
}